Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / backend / test_duplicate_messages_cleanup.py

Displaying Raw • Download


tests/backend/test_duplicate_messages_cleanup.py bce42bcdce0e7d2c6d78228e864a4cd1d974cc82 (bce42bcd) Text, 2.85 KB

T8b949e# SPDX-License-Identifier: 0BSD

Tff7b72import T7ee787time

Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787database Tff7b72import Te6edf3Database
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787databaseT7ee787.T7ee787provider Tff7b72import Te6edf3DatabaseProvider
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787databaseT7ee787.T7ee787schema Tff7b72import Te6edf3DatabaseSchema


Tff7b72def Td2a8ff_msgTb4b4b4(Te6edf3dbTb4b4b4, Tff7b72*Tb4b4b4, Te6edf3msg_hashTb4b4b4, Te6edf3peerTb4b4b4, Te6edf3contentTb4b4b4, Te6edf3is_incomingTff7b72=T79c0ff1Tb4b4b4, Te6edf3tsTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3now Tff7b72= Te6edf3ts Tff7b72if Te6edf3ts Tff7b72is Tff7b72not Tff7b72None Tff7b72else Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3dbTff7b72.Td2a8ffmessagesTff7b72.Td2a8ffupsert_lxmf_messageTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4: Te6edf3msg_hashTb4b4b4,
Ta5d6ff"Ta5d6ffsource_hashTa5d6ff"Tb4b4b4: Te6edf3peerTb4b4b4,
Ta5d6ff"Ta5d6ffdestination_hashTa5d6ff"Tb4b4b4: Te6edf3peerTb4b4b4,
Ta5d6ff"Ta5d6ffpeer_hashTa5d6ff"Tb4b4b4: Te6edf3peerTb4b4b4,
Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdeliveredTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffprogressTa5d6ff"Tb4b4b4: T79c0ff1.0Tb4b4b4,
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Te6edf3is_incomingTb4b4b4,
Ta5d6ff"Ta5d6ffmethodTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffdirectTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdelivery_attemptsTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffnext_delivery_attempt_atTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Te6edf3contentTb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Ta5d6ff"Tffd700{}Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6ffqualityTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6ffis_spamTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffreply_to_hashTa5d6ff"Tb4b4b4: Tff7b72NoneTb4b4b4,
Ta5d6ff"Ta5d6ffattachments_strippedTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4: Te6edf3nowTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8fftest_delete_duplicate_messages_by_content_keeps_oldestTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3path Tff7b72= Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffd.dbTa5d6ff"Tb4b4b4)
Te6edf3provider Tff7b72= Te6edf3DatabaseProviderTb4b4b4(Te6edf3pathTb4b4b4)
Te6edf3DatabaseSchemaTb4b4b4(Te6edf3providerTb4b4b4)Tff7b72.Td2a8ffinitializeTb4b4b4(Tb4b4b4)
Te6edf3db Tff7b72= Te6edf3DatabaseTb4b4b4(Te6edf3pathTb4b4b4)
Te6edf3peer Tff7b72= Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff32
Te6edf3base Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff1Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peerTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffhelloTa5d6ff"Tb4b4b4, Te6edf3tsTff7b72=Te6edf3base Tff7b72- T79c0ff30Tb4b4b4)
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff2Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peerTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffhelloTa5d6ff"Tb4b4b4, Te6edf3tsTff7b72=Te6edf3base Tff7b72- T79c0ff20Tb4b4b4)
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff3Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peerTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffhelloTa5d6ff"Tb4b4b4, Te6edf3tsTff7b72=Te6edf3base Tff7b72- T79c0ff10Tb4b4b4)
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff4Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peerTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffotherTa5d6ff"Tb4b4b4, Te6edf3tsTff7b72=Te6edf3baseTb4b4b4)
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff5Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peerTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3tsTff7b72=Te6edf3baseTb4b4b4)
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff6Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peerTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3tsTff7b72=Te6edf3base Tff7b72+ T79c0ff1Tb4b4b4)

Tff7b72assert Te6edf3dbTff7b72.Td2a8ffmessagesTff7b72.Td2a8ffcount_duplicate_lxmf_messages_by_contentTb4b4b4(Tb4b4b4) Tff7b72== T79c0ff2
Te6edf3deleted Tff7b72= Te6edf3dbTff7b72.Td2a8ffmessagesTff7b72.Td2a8ffdelete_duplicate_lxmf_messages_by_contentTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3deleted Tff7b72== T79c0ff2
Tff7b72assert Te6edf3dbTff7b72.Td2a8ffmessagesTff7b72.Td2a8ffcount_lxmf_messagesTb4b4b4(Tb4b4b4) Tff7b72== T79c0ff4
Te6edf3remaining Tff7b72= Tb4b4b4{
Te6edf3rTb4b4b4[Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4]
Tff7b72for Te6edf3r Tff7b72in Te6edf3dbTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(Ta5d6ff"Ta5d6ffSELECT hash, content FROM lxmf_messagesTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tff7b72assert Ta5d6ff"Ta5d6ff1Ta5d6ff" Tff7b72* T79c0ff32 Tff7b72in Te6edf3remaining
Tff7b72assert Ta5d6ff"Ta5d6ff4Ta5d6ff" Tff7b72* T79c0ff32 Tff7b72in Te6edf3remaining
Tff7b72assert Ta5d6ff"Ta5d6ff2Ta5d6ff" Tff7b72* T79c0ff32 Tff7b72not Tff7b72in Te6edf3remaining
Tff7b72assert Ta5d6ff"Ta5d6ff3Ta5d6ff" Tff7b72* T79c0ff32 Tff7b72not Tff7b72in Te6edf3remaining
Te6edf3dbTff7b72.Td2a8ffclose_allTb4b4b4(Tb4b4b4)
Te6edf3providerTff7b72.Td2a8ffclose_allTb4b4b4(Tb4b4b4)


Tff7b72def Td2a8fftest_duplicates_are_scoped_by_peer_and_directionTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3path Tff7b72= Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffd2.dbTa5d6ff"Tb4b4b4)
Te6edf3provider Tff7b72= Te6edf3DatabaseProviderTb4b4b4(Te6edf3pathTb4b4b4)
Te6edf3DatabaseSchemaTb4b4b4(Te6edf3providerTb4b4b4)Tff7b72.Td2a8ffinitializeTb4b4b4(Tb4b4b4)
Te6edf3db Tff7b72= Te6edf3DatabaseTb4b4b4(Te6edf3pathTb4b4b4)
Te6edf3peer_a Tff7b72= Ta5d6ff"Ta5d6ffbTa5d6ff" Tff7b72* T79c0ff32
Te6edf3peer_b Tff7b72= Ta5d6ff"Ta5d6ffcTa5d6ff" Tff7b72* T79c0ff32
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff1Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peer_aTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffsameTa5d6ff"Tb4b4b4, Te6edf3is_incomingTff7b72=T79c0ff1Tb4b4b4)
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff2Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peer_bTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffsameTa5d6ff"Tb4b4b4, Te6edf3is_incomingTff7b72=T79c0ff1Tb4b4b4)
Te6edf3_msgTb4b4b4(Te6edf3dbTb4b4b4, Te6edf3msg_hashTff7b72=Ta5d6ff"Ta5d6ff3Ta5d6ff" Tff7b72* T79c0ff32Tb4b4b4, Te6edf3peerTff7b72=Te6edf3peer_aTb4b4b4, Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffsameTa5d6ff"Tb4b4b4, Te6edf3is_incomingTff7b72=T79c0ff0Tb4b4b4)
Tff7b72assert Te6edf3dbTff7b72.Td2a8ffmessagesTff7b72.Td2a8ffcount_duplicate_lxmf_messages_by_contentTb4b4b4(Tb4b4b4) Tff7b72== T79c0ff0
Te6edf3dbTff7b72.Td2a8ffclose_allTb4b4b4(Tb4b4b4)
Te6edf3providerTff7b72.Td2a8ffclose_allTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────